package jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;

/**
 * JDBC中的事务控制
 */
public class JDBCDemo9 {
    public static void main(String[] args) {
        try (Connection connection = DBUtil.getConnection();){
            /*
                Connection上可以进行事务的控制
                需要注意的一点:JDBC中默认的事务控制是自动提交事务
                意思就是说:只要执行一条DML操作,就会自动提交一次事务.
             */
            connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
            connection.setAutoCommit(false);//关闭自动提交事务
            //事务是自动开始的,当我们执行DML操作时,会自动开启事务,知道我们提交事务或者回滚事务为止.
            String sql = "INSERT INTO user(username,password,nickname,age) " +
                    "VALUES(?,?,?,?)";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, "admin");
            preparedStatement.setString(2, "123123");
            preparedStatement.setString(3, "管理员");
            preparedStatement.setInt(4, 18);
            int num = preparedStatement.executeUpdate();
            System.out.println(num > 0 ? "添加成功！" : "添加失败！");
            connection.commit();//提交事务
            //connection.rollback();//回滚事务

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
